
import random

# 何时以及为何使用闭包
# 1.使用闭包，就是内层函数引用了外层函数的局部变量。
# 2.某个变量需要用函数来维护。
# 3.装饰器的时候使用

# https://blog.csdn.net/weixin_48561190/article/details/120995616
# 为函数创建一段内存区域（内部变量自己使用），并为其维护数据，
# 闭包用来保留当前的状态实现基于现在状态的更新。

def outer(situation):
    def inner():
        situation[0] += 1
        situation[1] += random.randint(0, 4)
        return situation
    return inner

ine = outer([15, 155])

for i in range(5):
    person = ine()                                          # person是一个变量，下次增加就是在原有的基础上
    age = person[0]
    high = person[1]
    print('小明{}岁时的身高是{}cm'.format(age, high))

# person = inner()
# age = person[0]
# high = person[1]
# print('小明{}岁时的身高是{}cm'.format(age, high))

